package bean;

import banco.DAOFactory;
import java.util.ArrayList;
import java.util.List;
import javax.faces.bean.ManagedBean;
import javax.faces.bean.SessionScoped;
import javax.faces.model.SelectItem;
import modelo.Empresa;
import modelo.Usuario;

@ManagedBean(name = "usuarioBean")
@SessionScoped
public class UsuarioBean {

    private Usuario usuario;
    private DAOFactory<Usuario> daoUsuario = new DAOFactory<Usuario>();
    private DAOFactory<Empresa> daoEmpresa = new DAOFactory<Empresa>();
    private List<SelectItem> empresas = new ArrayList<SelectItem>();
    private Empresa empresa;
    private List<Usuario> usuarios = new ArrayList<Usuario>();

    public List<Usuario> getUsuarios() {
        usuarios = daoUsuario.findAll("Usuario");
        return usuarios;
    }

    public String save() {
        if (this.getEmpresa() != null) {
            this.usuario.setIdEmpresa(this.empresa);
        }

        daoUsuario.saveOrUpdate(usuario);
        usuario = new Usuario();
        return "sucesso";
    }

    public String delete() {
        daoUsuario.delete(this.usuario);
        return "suceso";
    }

    public Usuario getUsuario() {
        if (usuario == null) {
            usuario = new Usuario();

        }
        return usuario;
    }

    public void setUsuario(Usuario usuario) {
        this.usuario = usuario;
    }

    public DAOFactory<Usuario> getDaoUsuario() {
        return daoUsuario;
    }

    public void setDaoUsuario(DAOFactory<Usuario> daoUsuario) {
        this.daoUsuario = daoUsuario;
    }

    public List<SelectItem> getEmpresas() {
        empresas.clear();
        empresas.add(new SelectItem(null, "Selecione"));
        List<Empresa> obterEmpresas = daoEmpresa.findAll("Empresa");
        for (int i = 0; i < obterEmpresas.size(); i++) {
            Empresa e = obterEmpresas.get(i);
            SelectItem si = new SelectItem(e.getIdEmpresa(), e.getNomeFantasia());
            empresas.add(si);
        }

        return empresas;
    }

    public void setEmpresas(List<SelectItem> empresas) {
        this.empresas = empresas;
    }

    public DAOFactory<Empresa> getDaoEmpresa() {
        return daoEmpresa;
    }

    public void setDaoEmpresa(DAOFactory<Empresa> daoEmpresa) {
        this.daoEmpresa = daoEmpresa;
    }

    public Empresa getEmpresa() {
        if (empresa == null) {
            empresa = new Empresa();
        }
        return empresa;
    }

    public void setEmpresa(Empresa empresa) {
        this.empresa = empresa;
    }
}
